package net.lainiao.morethread.Chapter3.demo7;

import java.util.List;
import java.util.concurrent.Exchanger;

/**
 * Created by Administrator on 2017/3/2.
 */
public class Producer implements Runnable {
    private List<String> buffer;
    private final Exchanger<List<String>> exchanger;

    public Producer(List<String> buffer, Exchanger<List<String>> exchanger) {
        this.buffer = buffer;
        this.exchanger = exchanger;
    }

    @Override
    public void run() {
        int cycle=1;
        for (int i = 0; i < 10; i++) {
            System.out.println("Producer: Cycle"+cycle);
            for (int j = 0; j < 10; j++) {
                String message="Event "+((i*10)+j);
                System.out.println("Producer:"+message);
                buffer.add(message);
            }
            try {
                buffer=exchanger.exchange(buffer);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Producer Buffer Size:"+buffer.size());
            cycle++;
        }

    }

}
